iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
自我挑戰組

Hello SQL 初次見面你好系列 第 26

Day 26: Redis 中資料型態的基本操作(上)

  • 分享至 

  • xImage
  •  

昨天我們和大家介紹了 Redis 中對於資料庫的基本操作,今天我們要開始介紹要如何針對不同的資料型態進行操作,在之前的篇章有提到 Redis 提供了豐富的資料型態和相對應的操作集,這使得 Redis 非常靈活和多功能,今天我們將探討 Redis 的三個基本資料型態:String、List 和 Hash,並學習如何有效地操作它們

首先我們要在終端機使用 `redis-cli` 進入 redis 的命令行介面

1. String (字串)

String 是 Redis 中最基本的資料型態
一個 key 對應一個 value,value 可以是字串整數浮點數

SET / GET

顧名思義就是 設定 / 獲取 一個 key 的 value

若是要一次寫入多筆的話就使用 MSET / MGET

127.0.0.1:6379> SET product 100
OK

127.0.0.1:6379> GET product
"100"


-- 後面加上 `xx` 參數可以修改原本的以存在的鍵值對
127.0.0.1:6379> SET product 120 XX
OK

127.0.0.1:6379> GET product
"120"

APPEND

在原本的 value 後新增新的內容

127.0.0.1:6379> SET name john
OK
127.0.0.1:6379> GET name
"john"

127.0.0.1:6379> APPEND name ny
(integer) 6
127.0.0.1:6379> GET name
"johnny"

INCR / DECR

將 key 中儲存的數字值 增加 1/減少 1

127.0.0.1:6379> GET counter
"120"

127.0.0.1:6379> INCR counter
(integer) 121

127.0.0.1:6379> DECR counter
(integer) 120

INCRBY / DECRBY

跟剛剛一樣只能用在儲存的值是整數的時候,但是可以給要增加多少的值

127.0.0.1:6379> GET counter
"100"

127.0.0.1:6379> INCRBY counter 50
(integer) 150
127.0.0.1:6379> DECRBY counter 20
(integer) 130

2. List (列表)

List 是簡單的字符串列表,按插入順序來排序,也可以在列表的開頭或尾部添加新元素

LPUSH / RPUSH

在列表的 左側(開頭) / 右側(尾部) 新增一或多個值

127.0.0.1:6379> RPUSH fruits apple banana
(integer) 2

127.0.0.1:6379> LRANGE fruits 0 -1
1) "apple"
2) "banana"


127.0.0.1:6379> LPUSH fruits orange
(integer) 3

127.0.0.1:6379> LRANGE fruits 0 -1
1) "orange"
2) "apple"
3) "banana"

LRANGE

獲取列表中的元素,語法為 LRANGE key start_idx end_idx

0 代表列表中的第一個元素 / -1 則為最後一個元素

-- 所以 0 -1 代表要拿到 fruits 的全部 value

127.0.0.1:6379> LRANGE fruits 0 -1
1) "orange"
2) "apple"
3) "banana"

LPOP / RPOP

移除和回傳列表中的 第一個 / 最後一個 元素

127.0.0.1:6379> LRANGE fruits 0 -1
1) "orange"
2) "apple"
3) "banana"

127.0.0.1:6379> LPOP fruits
"orange"
127.0.0.1:6379> RPOP fruits
"banana"

127.0.0.1:6379> LRANGE fruits 0 -1
1) "apple"

LLEN

查看列表的長度

127.0.0.1:6379> LLEN fruits
(integer) 1
127.0.0.1:6379> RPUSH fruits grape pear
(integer) 3
127.0.0.1:6379> LLEN fruits
(integer) 3

3. Hash (哈希)

Hash 是字串和其值之間的映射,這使得 Hash 非常適合用來存儲資料,也是很在 Redis 被使用

HSET / HGET

設定 / 獲取 Hash 中的一個鍵值對

127.0.0.1:6379> HSET user:1 name "John"
(integer) 1

127.0.0.1:6379> HGET user:1 name
"John"

HMSET / HMGET

一次設定 / 獲取 Hash 中的多個 key 的 value

127.0.0.1:6379> HMSET user:1 age 30 country "TW"
OK

127.0.0.1:6379> HMGET user:1 name age
1) "John"
2) "30"

HKEYS / HVALS

列出 Hash 中的所有 key / value

127.0.0.1:6379> HKEYS user:1
1) "name"
2) "age"
3) "country"

127.0.0.1:6379> HVALS user:1
1) "John"
2) "30"
3) "TW"

HGETALL

獲取 Hash 中的所有 key 和 value

127.0.0.1:6379> HGETALL user:1
1) "name"
2) "John"
3) "country"
4) "TW"
5) "age"
6) "30"

HDEL

刪除 Hash 中的一個或多個 key

127.0.0.1:6379> HDEL user:1 age
(integer) 1

127.0.0.1:6379> HGETALL user:1
1) "name"
2) "John"
3) "country"
4) "TW"

HLEN / HEXIST

HLEN: 獲取 Hash 中的鍵值對數量
HEXISTS: 檢查一個 key 是否存在於 Hash 中

127.0.0.1:6379> HLEN user:1
(integer) 2 -- 代表有兩對 key-value


127.0.0.1:6379> HEXISTS user:1 name
(integer) 1 -- 存在回傳 1
127.0.0.1:6379> HEXISTS user:1 age
(integer) 0 -- 不存在回傳 1

上一篇
Day25 Redis 的基本操作
下一篇
Day 27: Redis 中資料型態的基本操作(下)
系列文
Hello SQL 初次見面你好30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言